import axios from 'axios';

// 引入进度条
import nprogress from 'nprogress';
import 'nprogress/nprogress.css';

// 引入store大仓库
import store from '@/store';

// 1.利用axios对象的方法create，去创建一个axios实例
// 2.request其实就是axios，只不过稍微配置了一下
const requests = axios.create({
	// 配置对象
	// 基础路径，发请求的时候，路径中会自动出现api
	baseURL: '/api',
	// 请求超时时间
	timeout: 5000
});

// 请求拦截器

requests.interceptors.request.use(config => {
	// config:配置对象，对象里面有个属性很重要，headers请求头

	// 临时身份
	let uuid_token = store.state.detail.uuid_token;
	if (uuid_token) {
		// 在请求头中添加一个字段userTempId，这个userTempId字段不是随便写的，是和后台商量好的
		config.headers.userTempId = uuid_token;
	}

	// 服务器返回的token，永久身份

	if (store.state.user.token) {
		config.headers.token = store.state.user.token;
	}

	// 进度条开始动
	nprogress.start();

	return config;
});

// 响应拦截器
requests.interceptors.response.use(
	res => {
		// 进度条结束
		nprogress.done();

		return res.data;
	},
	err => {
		return Promise.reject(new Error(err));
	}
);

export default requests;
